package com.vladium.utils;

// ----------------------------------------------------------------------------
/**
 * Abstract base class for all shell pseudo-node implementations in this
 * package. It is used primarily to lower memory consumption by shell nodes.
 * 
 * @author (C) <a
 *         href="http://www.javaworld.com/columns/jw-qna-index.shtml">Vlad
 *         Roubtsov</a>, 2003
 */
abstract class AbstractShellProfileNode extends AbstractProfileNode {
	// public: ................................................................
	public final Object object() {
		return null;
	}

	public final IObjectProfileNode shell() {
		return null;
	}

	public final IObjectProfileNode[] children() {
		return EMPTY_OBJECTPROFILENODE_ARRAY;
	}

	public final int refcount() {
		return 0;
	}

	public final boolean traverse(final INodeFilter filter, final INodeVisitor visitor) {
		if ((visitor != null) && ((filter == null) || filter.accept(this))) {
			visitor.previsit(this);
			visitor.postvisit(this);
			return true;
		}
		return false;
	}

	// protected: .............................................................
	// package: ...............................................................
	AbstractShellProfileNode(final IObjectProfileNode parent) {
		super(parent);
	}
	// private: ...............................................................
} // end of class
// ----------------------------------------------------------------------------
